﻿cmake_minimum_required(VERSION 3.10)

include_directories(${CMAKE_CURRENT_SOURCE_DIR})

set(PROJECTS_LIST) # 空列表(VS中测试项目归类)
file(GLOB TEST_SOURCES "*_test.cpp") # 源码资源文件
list(FILTER TEST_SOURCES EXCLUDE REGEX "xxx_*") # 排除待定文件

foreach(TEST_FILE ${TEST_SOURCES})
    get_filename_component(TEST_NAME ${TEST_FILE} NAME_WE) # 获取文件名(不含后缀)
    list(APPEND PROJECTS_LIST ${TEST_NAME}) # 添加到列表

    # 创建测试程序
    message(STATUS "😄 Adding test: ${TEST_NAME} ...")

    # 生成测试项目
    add_executable(${TEST_NAME} ${TEST_FILE}) # 生成测试项目
    target_link_libraries(${TEST_NAME} PRIVATE ${MYLIB}) # 依赖项目库

    # 将测试添加到CTest
    # 格式：add_test(NAME <测试名称> COMMAND <可执行文件>)
    add_test(NAME ${TEST_NAME} COMMAND ${TEST_NAME} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
endforeach()

# message(STATUS "=> ${PROJECTS_LIST}")
if(MSVC) # Visual Studio
    set_target_properties(${PROJECTS_LIST} PROPERTIES FOLDER "unit_tests") # 项目分组
endif()
